package Demo;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Game {
    private static final String[] suits = {"♥","♣","♦","♠"};

    public List<Poker> buyPoker(){//获得扑克牌并将其存放在“poker”顺序表中
        List<Poker> pokers = new ArrayList<>();
        for (int i = 0;i < 4;i++){
            for (int j = 1;j <= 13;j++){
                Poker poker = new Poker(suits[i],j);
                pokers.add(poker);
            }
        }
        return pokers;
    }

    private void swap(List<Poker> pokers,int i,int j){//交换i和j下标的元素
        Poker tmp = pokers.get(i);//获得i位置的元素
        pokers.set(i,pokers.get(j));//将i下标设置为j下标的值
        pokers.set(j,tmp);//将j下标的元素设置为tmp
    }

    public void shuffle(List<Poker> pokers){
        for (int i = pokers.size() - 1;i > 0;i--){
            Random random = new Random();
            int index = random.nextInt(i);
            swap(pokers,i,index);//交换i下标的元素和随即生成的下标的元素，以达到洗牌的目的
        }
    }

    public List<List<Poker>> game(List<Poker> pokers){//二维数组，或者说是二维的顺序表
        List<List<Poker>> hand = new ArrayList<>();//三个牌手摸走的牌
        List<Poker> hand1 = new ArrayList<>();//三个牌手
        List<Poker> hand2 = new ArrayList<>();
        List<Poker> hand3 = new ArrayList<>();
        hand.add(hand1);
        hand.add(hand2);
        hand.add(hand3);
        for (int i = 0;i < 5;i++){//三个牌手，摸五轮
            for (int j = 0;j < 3;j++){
                Poker removePoker = pokers.remove(0);//摸走了牌堆最上面的那张牌放在removePoker中（删除了pokers顺序表中的第一张牌）
                hand.get(j).add(removePoker);//将摸走的这张牌添加到牌手的顺序表中   hand.get(j)表示获得hand顺序表中j位置的元素
                //上个语句表示：将牌堆上最上面那张牌放入三个牌手中第j个人的牌组中
            }
        }
        return hand;//返回摸走的牌
    }
}
